<template>
  <a-card :bordered="false">
    <!-- 查询区域 -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-col :xl="10" :lg="11" :md="12" :sm="24">
              <a-form-item label="发布日期">
                <j-date placeholder="请选择开始日期" class="query-group-cust" v-model="queryParam.sendTime_begin"></j-date>
                <span class="query-group-split-cust"></span>
                <j-date placeholder="请选择结束日期" class="query-group-cust" v-model="queryParam.sendTime_end"></j-date>
              </a-form-item>
            </a-col>
          <a-col :span="6">
            <a-form-item label="反馈类型">
                <j-dict-select-tag placeholder="请选择反馈类型" v-model="queryParam.replyType" dictCode="reply_type"/>
              </a-form-item>
          </a-col>
          <a-col :span="6">
            <a-form-item label="项目代号">
              <a-input placeholder="请输入项目代号" v-model="queryParam.projectCode"></a-input>
            </a-form-item>
          </a-col>
          <a-col :span="6">
            <a-form-item label="回复状态">
              <j-dict-select-tag placeholder="请选择回复状态" v-model="queryParam.replyStatus" dictCode="reply_status"></j-dict-select-tag>
            </a-form-item>
          </a-col>
          <a-col :span="6">
            <a-form-item label="阅读状态">
              <j-dict-select-tag placeholder="请选择阅读状态" v-model="queryParam.readFlag" dictCode="read_flag"></j-dict-select-tag>
            </a-form-item>
          </a-col>

          <a-col :span="8" >
            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
            </span>
          </a-col>

        </a-row>
      </a-form>
    </div>

    <div class="table-operator">
      <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query> -->
      <a-button @click="myhandleAdd" type="primary" icon="plus">新增</a-button>
      <a-button type="primary" @click="readAll" icon="book">全部标注已读</a-button>
      <!-- 高级查询区域 -->
      
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
        </a-menu>
        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
      </a-dropdown>
    </div>

    <a-table
      ref="table"
      size="default"
      bordered
      rowKey="id"
      :columns="columns"
      :dataSource="dataSource"
      :pagination="ipagination"
      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
      :loading="loading"
      @change="handleTableChange">
      <span slot="action" slot-scope="text, record">
        <a @click="showAnnouncement(record)">查看</a>
          <a-divider type="vertical" v-if="(record.msgCategory == 5 || record.msgCategory == 3)  && !record.replyStatus && record.toUserIds == userinfo.id"/>
        <a  v-if="(record.msgCategory == 5 || record.msgCategory == 3) && !record.replyStatus  && record.toUserIds == userinfo.id" @click="handleReply(record)">回复</a>
        <!-- <a-divider type="vertical" />
        
        <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                  <a>删除</a>
        </a-popconfirm> -->
        <a-divider type="vertical" v-if="record.sendStatus == 0"/>
        <a-popconfirm title="确定发布吗?" v-if="record.sendStatus == 0"  @confirm="() => releaseData(record.anntId)">
                  <a>发布</a>
                </a-popconfirm>
                <a-divider type="vertical" v-if="record.sendStatus == 1&&record.readFlag=='0'&&record.sender==userinfo.username"/>
                <a-popconfirm title="确定撤销吗?" v-if="record.sendStatus == 1&&record.readFlag=='0'&&record.sender==userinfo.username" @confirm="() => reovkeData(record.anntId)">
                  <a>撤销</a>
                </a-popconfirm>
        <!-- <a-menu-item v-if="record.sendStatus == 0" v-has="'UserSysAnnouncementList:release'">
                <a-popconfirm title="确定发布吗?" @confirm="() => releaseData(record.id)">
                  <a>发布</a>
                </a-popconfirm>
              </a-menu-item>
              <a-menu-item v-if="record.sendStatus == 1" v-has="'UserSysAnnouncementList:reovke'">
                <a-popconfirm title="确定撤销吗?" @confirm="() => reovkeData(record.id)">
                  <a>撤销</a>
                </a-popconfirm>
              </a-menu-item> -->
      </span>
    </a-table>
    <show-announcement ref="ShowAnnouncement"></show-announcement>
    <dynamic-notice ref="showDynamNotice" :path="openPath" :formData="formData"/>
    <!-- 表单区域 -->
    <sysAnnouncement-modal ref="addmodalForm" @ok="modalFormOk"></sysAnnouncement-modal>
    <sysAnnouncement-reply-modal ref="modalForm" @ok="modalFormOk" @close="modalFormOk"></sysAnnouncement-reply-modal>
  </a-card>
</template>

<script>
  import { filterObj } from '@/utils/util'
  import { getAction,putAction } from '@/api/manage'
  import ShowAnnouncement from '@/components/tools/ShowAnnouncement'
  import {JeecgListMixin} from '@/mixins/JeecgListMixin'
  import DynamicNotice from '../../components/tools/DynamicNotice'
  import SysAnnouncementReplyModal from './modules/SysAnnouncementReplyModal.vue'
  import { message } from 'ant-design-vue'
  import { USER_NAME,USER_INFO} from "@/store/mutation-types"
  import Vue from 'vue'
  import SysAnnouncementModal from './modules/SysAnnouncementModal'
  import {doReleaseData, doReovkeData} from '@/api/api'

  export default {
    name: "UserAnnouncementList",
    mixins: [JeecgListMixin],
    components: {
      DynamicNotice,
      ShowAnnouncement,
      SysAnnouncementReplyModal,
      SysAnnouncementModal
    },
    watch: {
      $route:{
        handler: function(nval,oval){
          this.changePage();
        }
      }
    },
    created(){
      debugger
        this.userinfo = Vue.ls.get(USER_INFO);
        console.log(1111)
        console.log(this.userinfo)
    },
    data () {
      return {
        description: '系统通告表管理页面',
        queryParam: {},
        columns: [
        {
            title: '序号',
            dataIndex: '',
            key:'rowIndex',
            width:80,
            align:"center",
            customRender:function (t,r,index) {
              return parseInt(index)+1;
            }
          },
          {
          title: '标题',
          align:"center",
          dataIndex: 'titile'
        },
        {
          title: '项目代号',
          align:"center",
          dataIndex: 'projectCode'
        },
        {
          title: '信息发布对象',
          align:"center",
          dataIndex: 'sender'
        },
        {
          title: '反馈类型',
          align:"center",
          dataIndex: 'replyType_dictText'
        },
        // {
        //   title: '信息发布对象',
        //   align:"center",
        //   dataIndex: 'userId_dictText'
        // },
        // {
        //   title: '消息类型',
        //   align: "center",
        //   dataIndex: 'msgCategory',
        //   customRender: function (text) {
        //     if (text == '1') {
        //       return "通知公告";
        //     } else if (text == "2") {
        //       return "系统消息";
        //     } else if (text == "3") {
        //       return "反馈消息";
        //     }
        //     else if (text == "4") {
        //       return "报警消息";
        //     }
        //     else if (text == "5") {
        //         return "人机对话";
        //       }  
        //     else {
        //       return text;
        //     }
        //   }
        // },
        // {
        //   title: '发布人',
        //   align:"center",
        //   dataIndex: 'sender'
        // },{
        //   title: '发布时间',
        //   align:"center",
        //   dataIndex: 'sendTime'
        // },
        // {
        //   title: '优先级',
        //   align:"center",
        //   dataIndex: 'priority',
        //   customRender:function (text) {
        //     if(text=='L'){
        //       return "低";
        //     }else if(text=="M"){
        //       return "中";
        //     }else if(text=="H"){
        //       return "高";
        //     } else {
        //       return text;
        //     }
        //   }
        // },
        {
          title: '阅读状态',
          align:"center",
          dataIndex: 'readFlag',
          customRender:function (text) {
            if(text=='0'||text=='-1'){
              return "未读";
            }else if(text=="1"){
              return "已读";
            } else {
              return text;
            }
          }
        },
        {
          title: '回复状态',
          align:"center",
          dataIndex: 'replyStatus',
          customRender:function (text) {
            if(text=='0'){
              return "未回复";
            }else if(text=="replied"){
              return "已回复";
            } else {
              return text;
            }
          }
        },
        {
          title: '操作',
          dataIndex: 'action',
          align:"center",
          scopedSlots: { customRender: 'action' },
        }],
		    url: {
          list: "/sys/sysAnnouncementSend/getMyAnnouncementSend",
          editCementSend:"sys/sysAnnouncementSend/editByAnntIdAndUserId",
          readAllMsg:"sys/sysAnnouncementSend/readAll",
          releaseDataUrl: "/sys/annountCement/doReleaseData",
          reovkeDataUrl: "sys/annountCement/doReovkeData",
          deleteBatch: "/sys/annountCement/deleteBatch",
        },
        loading:false,
        openPath:'',
        formData:'',
        msgCategory : '',
        userinfo : null
      }
    },
    methods: {
      changePage(){
         if (this.$route.path.indexOf("msgUsrSender") != -1) {
            let arr = this.$route.path.split("/")
            this.msgCategory = arr[arr.length - 1]
         }
         this.loadData(1)
      },
    loadData(arg) {
      if(!this.url.list){
        this.$message.error("请设置url.list属性!")
        return
      }
      if (this.$route.path.indexOf("msgUsrSender") != -1) {
         let arr = this.$route.path.split("/")
         this.msgCategory = arr[arr.length - 1]
      }
      if (this.$route.path.indexOf("messageReply") != -1) {
         this.msgCategory = '3' //反馈消息
      }
      //加载数据 若传入参数1则加载第一页的内容
      if (arg === 1) {
        this.ipagination.current = 1;
      }
      var params = this.getQueryParams();//查询条件
      this.loading = true;
      const username = this.$ls.get(USER_NAME)
      params.createBy=username
      params.msgCategory = this.msgCategory
      getAction(this.url.list, params).then((res) => {
        if (res.success) {
          //update-begin---author:zhangyafei    Date:20201118  for：适配不分页的数据列表------------
          this.dataSource = res.result.records||res.result;
          if(res.result.total)
          {
            this.ipagination.total = res.result.total;
          }else{
            this.ipagination.total = 0;
          }
          //update-end---author:zhangyafei    Date:20201118  for：适配不分页的数据列表------------
        }else{
          this.$message.warning(res.message)
        }
      }).finally(() => {
        this.loading = false
      })
    },
    myhandleAdd:function(){
      this.$refs.addmodalForm.messageType=this.msgCategory
      this.$refs.addmodalForm.add();
    },
      handleReply: function(record) {
        this.$refs.modalForm.replyOprationFLag = true;
        this.$refs.modalForm.edit(record);
        this.$refs.modalForm.title = "回复";
        this.$refs.modalForm.disableSubmit = true;
      },
      handleDetail: function(record){
        this.$refs.sysAnnouncementModal.detail(record);
        this.$refs.sysAnnouncementModal.title="查看";
      },
      showAnnouncement(record){
        putAction(this.url.editCementSend,{anntId:record.anntId}).then((res)=>{
          if(res.success){
            this.loadData();
            this.syncHeadNotic(record.anntId)
          }
        });
        if(record.openType==='component'){
          this.openPath = record.openPage;
          this.formData = {id:record.busId};
          this.$refs.showDynamNotice.detail();
        }else{
          this.$refs.ShowAnnouncement.detail(record);
        }
      },
      syncHeadNotic(anntId){
        getAction("sys/annountCement/syncNotic",{anntId:anntId})
      },
      //执行发布操作
      releaseData: function (id) {
        console.log(id);
        var that = this;
        doReleaseData({id: id}).then((res) => {
          if (res.success) {
            that.$message.success(res.message);
            that.loadData(1);
          } else {
            that.$message.warning(res.message);
          }
        });
      },
      //执行撤销操作
      reovkeData: function (id) {
        var that = this;
        doReovkeData({id: id}).then((res) => {
          if (res.success) {
            that.$message.success(res.message);
            that.loadData(1);
            this.syncHeadNotic(id)
          } else {
            that.$message.warning(res.message);
          }
        });
      },
      syncHeadNotic(anntId){
        getAction("sys/annountCement/syncNotic",{anntId:anntId})
      },
      readAll(){
        var that = this;
        that.$confirm({
          title:"确认操作",
          content:"是否全部标注已读?",
          onOk: function(){
            putAction(that.url.readAllMsg).then((res)=>{
              if(res.success){
                that.$message.success(res.message);
                that.loadData();
                that.syncHeadNotic();
              }
            });
          }
        });
      },
    }
  }
</script>
<style scoped>
  .ant-card-body .table-operator{
    margin-bottom: 18px;
  }
  .anty-row-operator button{margin: 0 5px}
  .ant-btn-danger{background-color: #ffffff}z

  .ant-modal-cust-warp{height: 100%}
  .ant-modal-cust-warp .ant-modal-body{height:calc(100% - 110px) !important;overflow-y: auto}
  .ant-modal-cust-warp .ant-modal-content{height:90% !important;overflow-y: hidden}
</style>